import random

from unit_tools.handle_data.yaml_handler import get_extract_yaml
import re


class DebugTalk:

    def get_extract_data(self, node_name, out_format=None):
        """
        获取全局yaml文件（extract.yaml）数据,首先判断out_format是否为数字类型，为数字类型提取列表类型数据，非数字提取嵌套字典数据
        :param node_name:全局文件中的key值；比如extract.yaml的headers
        :param out_format:str类型，0：随机去读取；-1：读取全部数据，返回字符串格式；-2：读取全部数据，返回列表格式；其他值：按顺序读取
        :return:
        """
        data = get_extract_yaml(node_name)
        # print(data,type(data))
        if out_format is not None and bool(re.compile(r'^[+-]?\d+$').match(str(out_format))):
            out_format = int(out_format)
            data_value = {
                out_format: self.seq_read(data, out_format),
                0: random.choice(data),
                -1: ','.join(data),
                -2: ','.join(data).split(',')
            }
            data = data_value[out_format]
        else:
            data = get_extract_yaml(node_name, out_format)
        return data

    def seq_read(self, data, out_format):
        """
        获取extract.yaml，第二个参数不为0、-1、-2的情况
        :param data:
        :param out_format:
        :return:
        """
        if out_format not in [0, -1, -2]:
            return data[out_format - 1]  # 减1的原因是列表索引是从0开始
        else:
            return None

    def get_now_time(self):
        """
        获取当前时间
        :return:
        """
        return "99999999"

    def get_headers(self, params_type):
        """
        获取请求头
        :param params_type: 参数类型；如data或json
        :return:
        """
        headers_mapping = {
            'data': {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},
            'json': {'Content-Type': 'application/json'}
        }
        header = headers_mapping.get(params_type)
        if header is None:
            raise ValueError('不支持其他类型的请求头设置')
        return header



    def params_md5(self):
        """
        进行md5加密
        :return:
        """
        pass



if __name__ == '__main__':
    debug = DebugTalk()
    result = debug.get_extract_data('variablesnames','-1')
    print(result)
